home *** CD-ROM | disk | FTP | other *** search
/ 95.86.62.111 / 95.86.62.111.tar / 95.86.62.111 / Useri_2000_ vo_2008.SQL < prev    next >
Text File  |  2014-05-15  |  6KB  |  225 lines

  1. USE master 
  2. GO 
  3. IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL 
  4. DROP PROCEDURE sp_hexadecimal 
  5. GO 
  6. CREATE PROCEDURE sp_hexadecimal 
  7. @binvalue varbinary(256), 
  8. @hexvalue varchar(256) OUTPUT 
  9. AS 
  10. DECLARE @charvalue varchar(256) 
  11. DECLARE @i int 
  12. DECLARE @length int 
  13. DECLARE @hexstring char(16) 
  14. SELECT @charvalue = '0x' 
  15. SELECT @i = 1 
  16. SELECT @length = DATALENGTH (@binvalue) 
  17. SELECT @hexstring = '0123456789ABCDEF' 
  18. WHILE (@i <= @length) 
  19. BEGIN 
  20. DECLARE @tempint int 
  21. DECLARE @firstint int 
  22. DECLARE @secondint int 
  23. SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1)) 
  24. SELECT @firstint = FLOOR(@tempint/16) 
  25. SELECT @secondint = @tempint - (@firstint*16) 
  26. SELECT @charvalue = @charvalue + 
  27. SUBSTRING(@hexstring, @firstint+1, 1) + 
  28. SUBSTRING(@hexstring, @secondint+1, 1) 
  29. SELECT @i = @i + 1 
  30. END 
  31. SELECT @hexvalue = @charvalue 
  32. GO 
  33.  
  34. IF OBJECT_ID ('sp_help_revlogin_2000_to_2005') IS NOT NULL 
  35. DROP PROCEDURE sp_help_revlogin_2000_to_2005 
  36. GO 
  37. CREATE PROCEDURE sp_help_revlogin_2000_to_2005 
  38.  
  39. @login_name sysname = NULL, 
  40. @include_db bit = 0, 
  41. @include_role bit = 0 
  42.  
  43. AS 
  44. DECLARE @name sysname 
  45. DECLARE @xstatus int 
  46. DECLARE @binpwd varbinary (256) 
  47. DECLARE @dfltdb varchar (256) 
  48. DECLARE @txtpwd sysname 
  49. DECLARE @tmpstr varchar (256) 
  50. DECLARE @SID_varbinary varbinary(85) 
  51. DECLARE @SID_string varchar(256) 
  52.  
  53. IF (@login_name IS NULL) 
  54. DECLARE login_curs CURSOR STATIC FOR 
  55. SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
  56. FROM master.dbo.sysxlogins 
  57. WHERE srvid IS NULL AND 
  58. [name] <> 'sa' 
  59. ELSE 
  60. DECLARE login_curs CURSOR FOR 
  61. SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
  62. FROM master.dbo.sysxlogins 
  63. WHERE srvid IS NULL AND 
  64. [name] = @login_name 
  65.  
  66. OPEN login_curs 
  67.  
  68. FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
  69.  
  70. IF (@@fetch_status = -1) 
  71. BEGIN 
  72. PRINT 'No login(s) found.' 
  73. CLOSE login_curs 
  74. DEALLOCATE login_curs 
  75. RETURN -1 
  76. END 
  77.  
  78. SET @tmpstr = '/* sp_help_revlogin script ' 
  79. PRINT @tmpstr 
  80. SET @tmpstr = '** Generated ' 
  81. + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */' 
  82. PRINT @tmpstr 
  83. PRINT '' 
  84. PRINT '' 
  85. PRINT '' 
  86. PRINT '/***** CREATE LOGINS *****/' 
  87.  
  88. WHILE @@fetch_status = 0 
  89. BEGIN 
  90. PRINT '' 
  91. SET @tmpstr = '-- Login: ' + @name 
  92. PRINT @tmpstr 
  93.  
  94. IF (@xstatus & 4) = 4 
  95. BEGIN -- NT authenticated account/group 
  96. IF (@xstatus & 1) = 1 
  97. BEGIN -- NT login is denied access 
  98. SET @tmpstr = '' --'EXEC master..sp_denylogin ''' + @name + '''' 
  99. PRINT @tmpstr 
  100. END 
  101. ELSE 
  102. BEGIN -- NT login has access 
  103. SET @tmpstr = 'IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = ''' + @name + ''')' 
  104. PRINT @tmpstr 
  105. SET @tmpstr = CHAR(9) + 'CREATE LOGIN [' + @name + '] FROM WINDOWS' 
  106. PRINT @tmpstr 
  107. END 
  108. END 
  109. ELSE 
  110. BEGIN -- SQL Server authentication 
  111. EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT 
  112.  
  113. IF (@binpwd IS NOT NULL) 
  114. BEGIN -- Non-null password 
  115. EXEC sp_hexadecimal @binpwd, @txtpwd OUT 
  116. SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=' + @txtpwd + ' HASHED' 
  117. END 
  118. ELSE 
  119. BEGIN -- Null password 
  120. SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=''''' 
  121. END 
  122.  
  123. SET @tmpstr = @tmpstr + ', CHECK_POLICY=OFF, SID=' + @SID_string 
  124. PRINT @tmpstr 
  125. END 
  126.  
  127. FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
  128. END 
  129.  
  130. IF @include_db = 1 
  131. BEGIN 
  132. PRINT '' 
  133. PRINT '' 
  134. PRINT '' 
  135. PRINT '/***** SET DEFAULT DATABASES *****/' 
  136.  
  137. FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
  138.  
  139. WHILE @@fetch_status = 0 
  140. BEGIN 
  141. PRINT '' 
  142. SET @tmpstr = '-- Login: ' + @name 
  143. PRINT @tmpstr 
  144.  
  145. SET @tmpstr = 'ALTER LOGIN [' + @name + '] WITH DEFAULT_DATABASE=[' + @dfltdb + ']' 
  146. PRINT @tmpstr 
  147.  
  148. FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
  149. END 
  150. END 
  151.  
  152. IF @include_role = 1 
  153. BEGIN 
  154. PRINT '' 
  155. PRINT '' 
  156. PRINT '' 
  157. PRINT '/***** SET SERVER ROLES *****/' 
  158.  
  159. FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
  160.  
  161. WHILE @@fetch_status = 0 
  162. BEGIN 
  163. PRINT '' 
  164. SET @tmpstr = '-- Login: ' + @name 
  165. PRINT @tmpstr 
  166.  
  167. IF @xstatus &16 = 16 -- sysadmin 
  168. BEGIN 
  169. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''sysadmin''' 
  170. PRINT @tmpstr 
  171. END 
  172.  
  173. IF @xstatus &32 = 32 -- securityadmin 
  174. BEGIN 
  175. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''securityadmin''' 
  176. PRINT @tmpstr 
  177. END 
  178.  
  179. IF @xstatus &64 = 64 -- serveradmin 
  180. BEGIN 
  181. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''serveradmin''' 
  182. PRINT @tmpstr 
  183. END 
  184.  
  185. IF @xstatus &128 = 128 -- setupadmin 
  186. BEGIN 
  187. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''setupadmin''' 
  188. PRINT @tmpstr 
  189. END 
  190.  
  191. IF @xstatus &256 = 256 --processadmin 
  192. BEGIN 
  193. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''processadmin''' 
  194. PRINT @tmpstr 
  195. END 
  196.  
  197. IF @xstatus &512 = 512 -- diskadmin 
  198. BEGIN 
  199. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''diskadmin''' 
  200. PRINT @tmpstr 
  201. END 
  202.  
  203. IF @xstatus &1024 = 1024 -- dbcreator 
  204. BEGIN 
  205. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''dbcreator''' 
  206. PRINT @tmpstr 
  207. END 
  208.  
  209. IF @xstatus &4096 = 4096 -- bulkadmin 
  210. BEGIN 
  211. SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''bulkadmin''' 
  212. PRINT @tmpstr 
  213. END 
  214.  
  215. FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
  216. END 
  217. END 
  218.  
  219. CLOSE login_curs 
  220. DEALLOCATE login_curs 
  221. RETURN 0 
  222. GO
  223.  
  224. exec sp_help_revlogin_2000_to_2005 @login_name=NULL, @include_db=1, @include_role=1
  225. GO